<?php
	class RegistrationModel{
		private $m_password;
		private $m_db = null;
		// Funktion för att lägga till användare i databasen.
		public function DoInsert($reg_username, $reg_password){		
			$sql = "INSERT INTO user(username, password) VALUES(?, ?)";			
			$stmt = $this->m_db->prepare($sql);		
			$stmt->bind_param('ss', $reg_username, $reg_password);
			// Finns inte användaren redan så skapas en ny.		
			if($this->m_db->execute($stmt) == 0)
			{
				return true;
			}
			return false;
		}
		// Funktion för att ta bort användare från databasen.
		public function DoDelete($reg_username){			
			$sql = "DELETE FROM user WHERE username = ?";	
			$stmt = $this->m_db->prepare($sql);		
			$stmt->bind_param('s', $name);		
			$this->m_db->execute($stmt);
		}
		// Funktion för att kontrollera om inmatat användarnamn redan finns i databasen.
		public function DoMatch($reg_username){			
			$sql = "SELECT username FROM user WHERE username = ?";	
			$stmt = $this->m_db->prepare($sql);			
			$stmt->bind_param('s', $reg_username);
			// Finns användaren redan ska de inte gå att registrera igen.		
			if($this->m_db->execute($stmt) > 0)
			{
				return true;
			}
			return false;		
		}
		// Funktion för att validera användarnamn.
		public function ValidateUsername($reg_username){
			// Kontrollerar om fältet är tomt eller inte.
		 	if($reg_username !== ''){			
				$pattern = '^[a-z0-9_-]{5,20}$^';
				// Returnerar sant om användarnamnet matchar mönstret.
				if(preg_match($pattern, $reg_username)){   
					return true;
				}
			}
			return false;		
		}
		// Funktion för att validera lösenord.
		public function ValidatePassword($reg_password){
			// Kontrollerar om fältet är tomt eller inte.
		 	if($reg_password !== ''){			
				$pattern = '^(?=.*\d).{6,12}$^';
				// Returnerar sant om lösenordet matchar mönstret.
				if(preg_match($pattern, $reg_password)){
					// Skickar lösenordets värde vidare till variabeln som ska användas för bekräftelse.
					$this->m_password = $reg_password;
					return true;
				}
			}
			return false;
		}
		// Funktion för att kontrollera om lösenordet matchar bekräftelsen.
		public function ConfirmPassword($reg_confirm){
			// Returnerar sant om lösenordet matchar bekräftelsen.
			if ($reg_confirm == $this->m_password) {
				return true;
			}
			return false;
		}
		// Konstruktor.
		public function __construct(Database $db) {
			$this->m_db = $db;
		}
	}
?>